recv
方法用于从服务器端接收数据。底层会自动yield
,等待数据接收完成后自动切换到当前协程。
function Coroutine\Client->recv(float $timeout = -1) : string;
recv
方法,不接受长度参数- 设置了通信协议,
recv
会返回完整的数据,长度受限于package_max_length
- 未设置通信协议,
recv
最大返回64K
数据
- 设置了通信协议,
- 未设置通信协议返回原始的数据,需要
PHP
代码中自行实现网络协议的处理 - 服务端主动关闭连接,
recv
返回空字符串 recv
操作需要进行一次协程切换,在收到数据后进行resume
$timeout
设置超时,单位为秒,浮点型,需要2.1.2
或更高版本
- 传入了
$timeout
,优先使用制定的timeout
参数 - 未传入
$timeout
,但在connect
时指定了超时时间,自动以connect
超时时间作为recv
超时时间 - 未传入
$timeout
,未设置connect
超时,将设置为-1
表示永不超时 - 发生超时的错误码为
ETIMEDOUT